//defineClass是JSPatch.js里面定义的方法,这个地方就是个js的方法调用
name = "123";
this.age = "234";

defineClass('JPViewController', {
  handleBtn: function(sender) {
    //这段js在执行的时候会报错，在JPEngine里面加载这段js的时候,会将这个js替换为JPTableViewController.__c("alloc").__c("init")
    var tableViewCtrl = JPTableViewController.alloc().init()
    self.navigationController().pushViewController_animated(tableViewCtrl, YES)
  }
})

defineClass('JPTableViewController : UITableViewController <UIAlertViewDelegate>', ['data'], {
  dataSource: function() {
    var data = self.data();
    if (data) return data;
    var data = [];
    for (var i = 0; i < 20; i ++) {
      data.push("cell from js " + i);
    }
    self.setData(data)
    return data;
  },
  numberOfSectionsInTableView: function(tableView) {
    return 1;
  },
  tableView_numberOfRowsInSection: function(tableView, section) {
    return self.dataSource().length;
  },
  tableView_cellForRowAtIndexPath: function(tableView, indexPath) {
    var cell = tableView.dequeueReusableCellWithIdentifier("cell") 
    if (!cell) {
      cell = require('UITableViewCell').alloc().initWithStyle_reuseIdentifier(0, "cell")
    }
    cell.textLabel().setText(self.dataSource()[indexPath.row()])
    return cell
  },
  tableView_heightForRowAtIndexPath: function(tableView, indexPath) {
    return 60
  },
  tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
     var alertView = require('UIAlertView').alloc().initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("Alert",self.dataSource()[indexPath.row()], self, "OK",  null);
     alertView.show()
  },
  alertView_willDismissWithButtonIndex: function(alertView, idx) {
    console.log('click btn ' + alertView.buttonTitleAtIndex(idx).toJS())
  }
})

//;(function(){try{
//defineClass('JPViewController', {
//  handleBtn: function(sender) {
//    //这段js在执行的时候会报错，
//    var tableViewCtrl = JPTableViewController.__c("alloc")().__c("init")()
//    self.__c("navigationController")().__c("pushViewController_animated")(tableViewCtrl, YES)
//  }
//})
//
//defineClass('JPTableViewController : UITableViewController <UIAlertViewDelegate>', ['data'], {
//  dataSource: function() {
//    var data = self.__c("data")();
//    if (data) return data;
//    var data = [];
//    for (var i = 0; i < 20; i ++) {
//      data.__c("push")("cell from js " + i);
//    }
//    self.__c("setData")(data)
//    return data;
//  },
//  numberOfSectionsInTableView: function(tableView) {
//    return 1;
//  },
//  tableView_numberOfRowsInSection: function(tableView, section) {
//    return self.__c("dataSource")().length;
//  },
//  tableView_cellForRowAtIndexPath: function(tableView, indexPath) {
//    var cell = tableView.__c("dequeueReusableCellWithIdentifier")("cell")
//    if (!cell) {
//      cell = require('UITableViewCell').__c("alloc")().__c("initWithStyle_reuseIdentifier")(0, "cell")
//    }
//    cell.__c("textLabel")().__c("setText")(self.__c("dataSource")()[indexPath.__c("row")()])
//    return cell
//  },
//  tableView_heightForRowAtIndexPath: function(tableView, indexPath) {
//    return 60
//  },
//  tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
//     var alertView = require('UIAlertView').__c("alloc")().__c("initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles")("Alert",self.__c("dataSource")()[indexPath.__c("row")()], self, "OK",  null);
//     alertView.__c("show")()
//  },
//  alertView_willDismissWithButtonIndex: function(alertView, idx) {
//    console.__c("log")('click btn ' + alertView.__c("buttonTitleAtIndex")(idx).__c("toJS")())
//  }
//})
//
//}catch(e){_OC_catch(e.message, e.stack)}})();
